perm filename DOC2[DOC,BGB] blob sn#095884 filedate 1974-04-11 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00023 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	~I0,0F1~F2~P20λ13FA
C00006 00003	4.1	FIVE EASY CREATIONS.
C00009 00004	4.2	COPY, KILL AND DUAL.
C00012 00005	4.3	SWEEP COMMANDS.
C00016 00006	4.4	THE EULER COMMANDS.
C00020 00007	4.5	BODY INTERSECTION COMMANDS.
C00024 00008	4.6	CUT COMMANDS.
C00027 00009	~I0,0λ13FA
C00031 00010	5.2	ONLINE PLOT FILE HARDCOPY: PLTVEC, XAP AND XIP.
C00035 00011	~I0,0λ13FA
C00037 00012	6.1	PROGRAM CONTROL.
C00041 00013	6.3  BODY NAMING AND RETRIEVING.
C00045 00014	6.5	LINK FOLLOWING COMMANDS.
C00049 00015	6.5	LINK FOLLOWING COMMANDS (continued).
C00052 00016	~I0,0λ13FA
C00055 00017	7.1	STATUS DISPLAY.
C00059 00018	7.2	HELP DISPLAY.
C00064 00019	7.5 	FACE COLORING.
C00068 00020	7.7	WORLDS AND WINDOWS.
C00072 00021	~I0,0λ2FA
C00075 00022	~JAI150,0FA
C00078 00023	~JAI150,0FA
C00085 ENDMK
C⊗;
~I0,0;F1~F2~P20;λ13;FA
~JC;FA SECTION 4

~JC;FBTOPOLOGICAL COMMANDS.
~λ9;JAFA

   4.1	FIVE EASY CREATIONS.
	      4.1.1	"∞"	Instant Cube.
	      4.1.2	"α∞"	Instant Torus.
	      4.1.3	"X CUBE <DX> <DY> <DZ>"
	      4.1.4	"X CYLN <RADIUS> <N-SIDES> <DZ>"
	      4.1.5	"X BALL <RADIUS> <M-LONGITUDES> <N-LATITUDES>"

   4.2	COPY, KILL AND DUAL.
	      4.2.1	"C"	Copy.
	      4.2.2	"K"	Kill.
	      4.2.3	"αK"	Edge-Vertex Kill.
	      4.2.4	"βD"	Dual.

   4.3	SWEEP COMMANDS.
	      4.3.1	"S" 	Sweep
	      4.3.2	"αS"	Pyramid.
	      4.3.3	"R"	Rotation Solid Completion.
	      4.3.4	"X SILHOUETTE <ZMIN> <ZMAX>"
	      4.3.5	"X PRISMOID"

   4.4	THE EULER COMMANDS.
	      4.4.1	"V"	Make Vertex Body.
	      4.4.2	"E"	Make Edge and Vertex.
	      4.4.3	"M"	Midpoint an Edge.
	      4.4.4	"J"	Join Vertices.
	      4.4.5	"G"	Glue Faces.

   4.5	BODY INTERSECTION COMMANDS.
	      4.5.1	"α∩"	Body Intersection.
	      4.5.2	"α∪"	Body Union.
	      4.5.3	"α¬"	Body Subtraction.
	      4.5.4	"¬" 	Evert Body Surface Orientation.
	      4.5.5	"|"  	Invert Edge Linear Orientation.
	      4.5.6	"$"  	Make Convex.
	      4.5.7	"α$" 	Edge Slurp.

   4.6	CUT COMMANDS.
			 "X CUT <X> <Y> <Z>"	Cut Bodies, Faces and Edges.
			"αX CUT <X> <Y> <Z>"	Cut Faces and Edges.
			"βX CUT <X> <Y> <Z>"	Cut Edges.
			"εX CUT"			Kill Temporaries (Uncut).

   4.7	PARTS TREE COMMANDS.
			"A"	Attach.
			"D"	Detach.
~λ13;JUFA
4.1	FIVE EASY CREATIONS.

4.1.1	"∞" Instant Cube.

	The instant cube command places a command string for making a
particular cube into the teletype buffer. The purpose of this command
is to make a demonstration object.

4.1.2	"α∞" Instant Torus.

	The instant torus command places a command string for making a
particular torus into the teletype buffer. The purpose of this command
is to make a demonstration object.

4.1.3	"X CUBE <DX> <DY> <DZ>"

	The CUBE command  makes a right rectangular prism  with width
height and  depth as given in the three arguments.   The body node of
the cube is  pushed into the stack,  and the cube  is located at  the
world origin.  The absolute value of  the arguments is taken  so that
the  cube is always solid.  A zero <DZ>  returns a rectangular lamina
rather than a cube.

4.1.4	"X CYLN <RADIUS> <N-SIDES> <DZ>"

	The CYLN  makes a  right prism that  approximates a  circular
cylinder. A zero <DZ>  argument returns a circular lamina rather than
a cylinder. The <N-sides> argument is forced to be at least three.

4.1.5	"X BALL <RADIUS> <M-LONGITUDES> <N-LATITUDES>"

	The BALL  command  makes  a polyhedron  that  approximates  a
sphere. The  <M-Longitudes>  and <N-Latitudes>  are forced  to be  at
least three and two respectively.
4.2	COPY, KILL AND DUAL.

4.2.1	"C"	Copy.

	This command copies the body or face from the  top of stack in a  reasonable
manner and  pushs it down. The copy of a body  includes all the parts of
that body. The copy of a face, creates a two-faced body lamina coincident
with the given face.

4.2.2	"K"	Kill.

	This command takes  the top body,  face,  edge or  vertex and
attempts to delete  it in a reasonable manner. Kill of a body deletes
it and all its parts. Kill of  a face removes the given face and  all
its edges and vertices but one  vertex, which is placed in the center
of  the given  face and  is returned  to the  stack. Kill of  an edge
removes the given  edge and its negative  face, NFACE(E).  Kill  of a
vertex removes the  vertex and all its edges and  faces but one face,
which is returned to the stack. The kill operation is not defined  in
cases which would  leave one-sided  faces or dangling  edges; however
the necessary trihedral  restrictions are not imposed so that certain
illegal kills are possible and other illegal kills are  fatal.

4.2.3 "αK" Edge-Vertex Kill.

	The "αK"  kill of an edge  removes the edge and  its negative
vertex,   NVT(E); the  positive vertex,   PVT(E), is repositioned to be at the
center of the original edge. The PVT(E) vertex is returned to the stack.



4.2.4	"βD"	Dual.
~W1,500,100,1800;;JUFA
	The "βD" command makes  the face/vertex dual of a  body; that
is all  the faces become vertices and  all the vertices become faces.
This command  will turn  dodecahedrons into  icosahedrons (or  jacks
into horny octahedrons) as illustrated.

~W1,1260,100,1800;;
H2;X0.70;
L270,-400;
*FIG424.PLT;FA
4.3	SWEEP COMMANDS.

4.3.1	 "S" 	Sweep.
	"βS"	Sweep Cylinder, Edges Not Sharp."

	This command  sweeps a face  into either a  sheet or  a solid
depending on the NCNT of the face.  If the NCNT is zero, then "S" returns a new
face coincident with the given face and connected to it by  new sweep
edges and rectangular  sweep faces forming a prism. When  the NCNT is
non-zero, only  the first NCNT edges of the argument face's perimeter
are swept into new  faces, for the sake of creating solids of rotation.
The "S" command applied to a vertex sweeps out a new vertex and a new edge.
The "βS" command is the same as "S" except that the new sweep edges are
marked with the NSHARP (not sharp) bit.


4.3.2	"αS"	Sweep Pyramid.
	"εS"	Sweep Pyramid, Edges Not Sharp.

	Given a face, "αS"  will create a peak vertex and  place it in
the  center of the  face connected  by an edge  to each of  the face's original
vertices. The peak vertex is  returned to the stack. Given a  vertex,
the  pyramid command  forces  all  the faces  of  that  vertex to  be
triangular (as if the given vertex were a peak vertex of a pyramid).

4.3.3	"R"	Rotation Solid Completion.

	After  a  wire  has  been  swept  around, you have a shell of
rotation.  To change a shell into a solid all that remains to be done
is  do  a series of J commands on the leading and lagging vertices of
the shell. The R command, using the NCNT  to  step  around  the  pole
caps, calls the J-command for all the necessary pairs of vertices. The sweep face
is taken as an argument and nothing is returned.

4.3.4	"X SILHOUETTE <ZMIN> <ZMAX>"

	This  command sweeps  a  silhouette lamina  body  into a  cone
between  -<zmin> and  -<zmax> on  the Z-axis of  the now  camera. The
minus Z half space is the one that contains the objects  visible from
the camera;  that is, the camera's  principle ray is the  minus Z-axis
ray.

4.3.5	"X PRISMOID"

	This command is like the face sweep command except that the
diagonal edges are provided across all the new sweep face rectangles forming
a prismoid of triangles rather than a prism of rectangles. (See, the
icosahedron example, 2.4).
4.4	THE EULER COMMANDS.

4.4.1	"V"	Make Vertex Body.
	"βV"	Make Body node.

	This command  creates a polyhedron  consisting of  one vertex
and  one face.   The vertex  is placed  at the  world origin.   The V
command takes no arguments and  leaves the new body, face and  vertex
on the  stack with the  vertex on top. The  "βV" command will  make a
naked body node, that is a body with no faces, edges or vertices.

4.4.2	"E"	Make Edge and Vertex.

	This command creates a new edge and  a  new  vertex  starting
from  an  old  vertex.  The E command requires two arguments, the top
argument is the old vertex and the second argument must be one of the
faces  to  which  the vertex belongs.  The new edge and vertex become
associated with the given face.

4.4.3	"M"	Midpoint an Edge.

	This command takes an edge argument and creates a new edge and
a  new vertex.  The  new mid vertex  is positioned along  the edge in
proportion to the value of DDEL. Type the commands "ε5M" in  order to
make a  midpoint that  is geometrically  in the  middle of  the given
edge.

4.4.4	"J"	Join Vertices.

	This command  creates a  new face and  a new  edge.  The  "J"
command has  two forms.  The general form  of the "J" command expects
two vertices of the same  face to be given  on the top of the  stack,
and it returns in their place a new edge and a new face with the edge
on top.  The wire form of the "J" command applies only to a face that
doesn't have a closed perimeter.  The wire "J"  returns the other end
of the wire in the top of stack and leaves the second argument unchanged.

4.4.5	"G"	Glue Faces.

	This command takes two  faces from the top of  the stack. The
faces  should be of opposite  orientation, they should  have the same
number of vertices, and the vertices should be nearly  coincident. The
two faces  are deleted along with  all the edges and  vertices of the
second  one of them. If  there were two bodies  before, then one will
remain; as  a body  glued to  itself  forms a  hole (or  handle)
yielding a  polyhedral surface of  genus one greater  than before. In
either case, the glue command returns the body of the faces  so
formed.
4.5	BODY INTERSECTION COMMANDS.

4.5.1	"α∩"	Body Intersection.

	Given two different bodies from the top  of the stack, if the
intersection of  the space enclosed by their  surfaces is not empty a
new polyhedron will be formed  to represent the surface of the  space
of intersection; and the given bodies will be killed.

4.5.2	"α∪"	Body Union.

	Given two different bodies from the top  of the stack, if the
union  of the space  enclosed by  their surfaces is  simply connected
(that is a`la de  Morgan: the intersection  of the space enclosed  by
their surfaces is  not empty); then a new polyhedron  will be created
representing  the surface of the union of  the enclosed spaces of the
given bodies. The given bodies will be killed.

4.5.3	"α¬"	Body Subtraction.

	Subtract the top  of the stack  body from the body  second in
the stack (where subtraction means union of the evert of the top body
with the second body).

4.5.4	"¬" 	Evert Body Surface Orientation.

	GEOMED polyhedra have  an inside and an  outside irrespective
of enclosing  a finite positive volume; that is, a thing that  appears to be a
cube can either be a solid in space or a space in a solid.  The evert
command turns solids into holes and holes into solids.
Holes are defined as polyhedra with negative volume.

4.5.5	"|"  	Invert Edge Linear Orientation.

	Edges  are directed  vectors  with a  negative  vertex and  a
positive vertex. The  "|" command flips the linear orientation of an
edge by swapping its vertices, faces and wings (edge wings are discussed 
in part II).

4.5.6	"$"  	Make Convex.

	This command  may be  applied to a  face or  a body. All  the
faces referred to will be split into triangles.

4.5.7	"α$" 	Edge Slurp.

	This command  will attempt to  remove or darken  the visually
unaesthetic  edges that  arise from  the  "$" make convex  command. The
edges slurped are the  one with dihedral angles  of almost pi, and  with
wing angles that sum to less than pi at each vertex.
4.6	CUT COMMANDS.
~JAFA
	 "X CUT <X> <Y> <Z>"	Cut Bodies, Faces and Edges.
	"αX CUT <X> <Y> <Z>"	Cut Faces and Edges.
	"βX CUT <X> <Y> <Z>"	Cut Edges.
	"εX CUT"			Kill Temporaries (Uncut).

~JUFA	The cut command  argument specifies a cutting plane  in terms
of  a vector from  the world origin;  the direction of  the vector is
normal to  the desired  plane, and the  magnitude of  the  vector is  the
distance of the origin from the desired plane.

~H2;X1.0;L0,50;*FIGCUT;I1325,0;JUFA
4.7	Parts Tree Structure - The Attach and Detach Commands.

~JAFA	"A"	ATTACH
	"D"	DETACH

~JUFA	The parts' tree commands "A"
attach and and "D" detach, allow  bodies to be connected into a  tree
structure without affecting  their faces, edges or  vertices. The "A"
command  links the body in the top of the stack to the body in
the second  stack position  as a  sub-part  (or child).   The  detach
command unlinks  a body from  its parent. Certain  operations such as
the  Euclidean  transformations   apply  to  a   body  and  all   its
descendents. If  the top entities of the stack are
not bodies,  then  these commands are no-operations. Because  of  the
implementation,  the   parts  structure   is  always  kept   a  tree;
circularities and incest are prevented.
~I0,0;λ13;FA
~JC;FA SECTION 5

~JC;FBINPUT/OUTPUT COMMANDS.
~JAFA

	"I"	input B3D file.		"O"	output B3D file.
	"αI"	input CAM file.		"αO"	output CAM file.
	"βI"	input CRE film.		"βO"	output V2D file.
	"εI"	input GEM file.		"εO"	output GEM file.

	"βZ"	take commands from GEO file.
	"P"	output PLT file of current display buffer.

5.1	I/O COMMANDS.

~JUFA	The "I" and "O" are the commands  for input and output. There
are two  file formats for polyhedra named B3D  and GEM. The plain "O"
command will output a  body (and all its parts)  from the top of  the
stack into a B3D  file. The plain "I" command will  input a body (and
all  its parts) from  a B3D file and  will push it  on the stack. The
"αI" and "αO" input and output CAM files to and from  the node of the
"now"  camera. The final simple I/O command is "P" which creats a plot
file of the current display.

	The "εI" and  "εO" commands are  nearly identical to  the "I"
and  "O"  commands, except  that  they  read and  write  more  of the
contents of each body,  face,  edge and vertex  node for the sake  of
GEOMES (SAIL) and  GEOMEL (LISP) users.  Specifically, words  0 and 8
of each node is included in the GEM format.

	The meta I/O commands provide an indirect method of getting
video images into and out of GEOMED. On the input side, a television
image must first be converted into a line drawing using the program
CRE which creates CRE files; on the output side, line drawings, V2D,
are converted into televsion pictures using the program MKVID.
The "βI" command inputs a  CRE  film of images and  places  the
images on the now-camera's node. The "βO" command does a hidden line
elimination and a photometric simulation (shines the sun on all the
visible faces) in order to create
a  V2D file (vectors 2-D) for the sake of MKVID.
Further details on CRE and MKVID are available from the system's
HELP command.


5.2	ONLINE PLOT FILE HARDCOPY: PLTVEC, XAP AND XIP.

	There are two online hardcopy plotting devices: the 
Xerox Graphics Printer, XGP and the
Calcomp  plotter. A  plot file  (which  is a  display buffer)  can be
plotted on the  Calcomp by running the  program PLTVEC. PLTVEC  first
asks for  point vector default:  REGULAR, DASHED or VECTOR;  type the
letter  "R" or  just type a  carriage return.  Next PLTVEC  ask for a
scale size; type a real number between 0.1 and 2.5.  A scale 1.0 will
yield a  plot approximately the size of  the physical display screen,
10 inchs on a side.  Next PLTVEC asks for  the plot file name,  after
which the plot begins. When the plot is completed, the question "move
pen" appears  and can be answered with the  letters "L" for left, "R"
for right, "U" for up and "D"  for down. On the other hand, in  order
to  get an  XGP  copy of  a  plot (or  even a  video  file); type  "R
XAP;L0,0;*<file>;"  or "R  XIP;L0,0;*<file>;". Futher  details on XAP
and XIP are available from the system HELP command.

5.3	VIDEO IMAGE DISPLAY: DDVID.

	After a V2D file  is converted into a television  file by the
program MKVID; the picture, which is in standard Hand/Eye format, may
be displayed  on the video  synthesizer via  the Data  Disc using  the
program DDVID.  To display a television  image using DDVID,   type "R
DDVID  <return> E  <return> I<filename>  <return> R<return>".
DDVID will type a list of its commands in response  to a  question mark.

5.4	GEOMED COMMAND FILES.

	Contrary to its design philosophy, GEOMED will accept commands
from a file. The proper design philosophy encourages the would be geometric
programmer to use the LISP embedded or the SAIL embedded version of GEOMED 
notation rather than the syntactically weak single-character jump-table
notation. A command file is executed by the "βZ" command which will ask
for a file name. The file should have no line numbers. Comments may
be included among the commands prefixed by "∃" and terminated by a carriage-return
and line-feed. A "α∃" comment prefix will cause the comment to
be typed out; the "β∃" comment prefix will cause GEOMED to wait for the
operator to type a character; and the "ε∃" comment prefix will both print the 
comment and wait.
~I0,0;λ13;FA
~JC;FA SECTION 6

~JC;FBEDITOR CONTROL COMMANDS.
~JAFA
   6.1	PROGRAM CONTROL.

	      6.1.1	"εE"	Exit GEOMED.
	      6.1.2	"α#"	Enter DDT.

   6.2	STACK COMMANDS.

	      6.2.1.	 "↔"	Swap First and Second Elements of Stack.
			"α↔"	Swap First and Third  Elements of Stack.
			"β↔"	Swap First and  Last  Elements of Stack.
			"ε↔"	Swap Second and Third Elements of Stack.
	      6.2.2	"↓"	Duplicate Push Stack Down.
			"↑"	Discard Pop Stack.
	      6.2.3	"α↓"	Rotate the Stack Down.
			"α↑"	Rotate the Stack Up.
	      6.2.4	"⊗"	Push Universe Node into the Stack.
			"αC"	Push the Now Camera into the Stack.

   6.3	BODY NAMING AND RETRIEVING.

	      6.3.1	"N"	Name Body.
	      6.3.2	"B"	Body Get.
	      6.3.3	"αB"	Body Retrieval by Name or by Numeral.

   6.4	FACE AND VERTEX PERIMETER TRAVELING.

			"."	Fetch Counter Clockwise.
			","	Fetch Clockwise.
			"+"	Fetch Other.
			"αV<n>"	Fetch Nth Vertex of a Body.

   6.5  LINK FOLLOWING COMMANDS.

			"<" NFACE Link.		">" PFACE Link.
			"≤" NED Link.		"≥" PED Link.
			"∨" NVT Link.		"∧" PVT Link.
			"∩" DAD Link.		"∪" SON Link.
			"⊂" BRO Link.		"⊃" SIS Link.
			"←" ALT Link.		"→" ALT2 Link.
			"," CW  Link.			"." CCW Link.

6.1	PROGRAM CONTROL.

6.1.1	"εE"	Exit GEOMED.

~JUFA	Exit the GEOMED  editor. Returns control to monitor  level or
to  user program level. When  embedded, GEOMED returns  the entity at
the top of its stack to its caller as its value.

6.1.2	"α#"	Enter DDT.

	Enters DDT if  it exists.   The SYS versions of  GEOMED never
have  DDT; the  versions  GEOMED.DMP[GEM,HE] and  G.DMP[GEM,BGB] will
usually have DDT (which is actually a Swinehart RAID); and a GEOMES core
image has DDT depending  on how the compile and load  was done. A DDT
"αP" command will continue execution in the GEOMED listen loop.
 

6.2  STACK COMMANDS.
~JAFA
6.2.1	 "↔"	Swap First and Second Elements of the Stack.
	"α↔"	Swap First and  Third Elements of the Stack.
	"β↔"	Swap First and  Last  Elements of the Stack.
	"ε↔"	Swap Second and Third Elements of the Stack.

~JUFA	GEOMED commands  take their  arguments from  and leave  their
results in a pushdown stack of bodies,  faces,  edges and vertices.
The contents of the stack are displayed on the left hand side  of the
display screen. The swap commands  exchange the indicated elements of the
stack  if  they  exist.  The stack  can  hold  one  hundred entities,
although only the top thirty elements will be displayed.

~JAFA6.2.2	"↓"	Duplicate Push Stack Down.
	"↑"	Discard Pop Stack.

~JUFA	The "↓" command push the stack down and places a duplicate of
the previous top of stack into the top of stack. The "↑" command pops
the stack discarding the top element.

~JAFA6.2.3	"α↓"	Rotate the Stack Down.
	"α↑"	Rotate the Stack Up.

~JUFA	The rotate stack commands preserve the  number of elements in
the stack. Rotate  down pushs the stack and moves the last element to
the top. The rotate  up pop the stack and  moves the previous top  to
the bottom.

~JAFA6.2.4	"⊗"	Push Universe Node into the Stack.
	"αC"	Push the now camera into the Stack.

~JUFA	These two commands require no arguments,  but merely push the
Universe  node or  the current  camera into the  stack, so  that node
linking can be started.
6.3  BODY NAMING AND RETRIEVING.

6.3.1	"N"	Name Body.

	This command accepts a  string of up to ten  characters typed
as a name for the body in the top of the stack; any characters can be
used in the name.

6.3.2	"B"	Body Get.

	This command will  replace the edge,  face, or vertex  in the
top of the stack with the body to which it belongs.

6.3.3	"αB"	Body Retrieval by Name or by Numeral.

	Each body has a numeral corresponding to  its position in its
world's body ring. The "αB" command will accept a name or numeral and
will push the indicated body into the stack.


6.4	FACE AND VERTEX PERIMETER TRAVELING.
~JAFA
	"."		Fetch Next Edge Counter Clockwise about Face (Vertex).
	","		Fetch Next Edge Clockwise about Face (Vertex).
	"+"		Fetch Other Face (Vertex) of the Edge.
	"αV<n>"	Fetch Nth Vertex of a Body.
	"≥"		Fetch First Edge of a Face or Vertex.

~JUFA	When the top two positions of the stack contain an edge and a
face  (or an  edge and a  vertex) that  are connected; then  both are
intensified and face (vertex)  perimeter traveling is possible  using
the "," or  the "." commands to  obtain the next edge  about the face
(vertex)  from  the given  edge, going  in  the clockwise  or counter
clockwise  direction  (as seen  from  the  exterior  surface  of  the
polyhedron). It  is also possible while perimeter  traveling to cross
to the other  face (vertex) of  the given  edge by means  of the  "+"
command. Remember that  whenever there is  a face, edge or  vertex in
the top of the stack, the body to which it belongs can be obtained by
using the "B" command.  Mastering these commands alleviates  the urge
to have  a light pen, or  to take prolonged trips  around edge rings.
The "αV<n>" retrieves the Nth vertex around the body ring of the body
in the top of the  stack; the vertex numerals are displayed  when the
"αL" switch is toggled on.  Trivia experts will be happy to know that
"α." and "α," fetch the next vertex (face), counter clockwise and
clockwise respectively,
from the current edge with respect to the current face (vertex).
6.5	LINK FOLLOWING COMMANDS.

~JUFA	The GEOMED data structure consists of twelve word nodes which
contain  links  and  data.  The  following  command characters  fetch
particular links of the entity in the top of the stack:

~λ3;JAFA		WORD1:	"<" NFACE Link.		">" PFACE Link.
		WORD2:	"≤" NED Link.		"≥" PED Link.
		WORD3:	"∨" NVT Link.		"∧" PVT Link.
		WORD4:	"∩" DAD Link.		"∪" SON Link.
		WORD5:	"⊂" BRO Link.		"⊃" SIS Link.
		WORD6:	"←" ALT Link.		"→" ALT2 Link.
		WORD7:	"," CW  Link.			"." CCW Link.

~λ13;JUFA	The root of the  data structure is the UNIVERSE  node,  which
is unique,   and which can be pushed into  the stack by executing the
"⊗" command.  Directly accessible  from the  UNIVERSE  node are  the
display ring and the world ring:

~λ5;JAFA		"∩" of the UNIVERSE	returns the "now" WORLD.
		"∪" of the UNIVERSE	returns the "first" WORLD.
		"." of the UNIVERSE	returns the "now" display.
		"," of the UNIVERSE	returns the "first" display.

~λ13;JUFA	A display  is  not a  node,  but is  rather a  ring  of windows.  The
refresh subroutine GEODPY,  refreshs the windows of the "now" display
ring.

~JAFA		"⊂" and "⊃" of a WINDOW travels the Window Ring of a display.
	   	"." and "," of a WINDOW travels the Display Ring.

Each world has  at least one  camera, one sun,  and a ring  of bodies.

~λ5;JAFA		"←" of a WORLD		returns the "first" SUN.
		"∩" of a WORLD		returns the "now" CAMERA.
		"∪" of a WORLD		returns the "first" CAMERA.
		"." and "," of a WORLD travels the World's Body Ring.
		"⊂" and "⊃" of a WORLD travels the World Ring of the UNIVERSE.

~λ13;JUFA	Each camera points back  to the world to which it  belongs "∪"; and
belongs  to  that   world's  camera  ring , "⊂"  and  "⊃" ;  and  has
potentially two rings  of images: the synthetic  image ring, ".",  of
images from  the hidden  line eliminator, OCCULT;  and  the perceived
image ring, ",", of images from the video edge finder, CRE.
6.5	LINK FOLLOWING COMMANDS (continued).

	A  polyhedral  surface  is  composed   of  faces,  edges  and
vertices.  Each particular face, edge,  or vertex belongs  to one and
only one body; and in turn each  body has a ring of faces, a ring  of
edges and a ring of vertices:

~JAFA	"<" and ">" of a body travels the Face Ring of that body.
	"≤" and "≥" of a body travels the Edge Ring of that body.
	"∨" and "∧" of a body travels the Vertex Ring of that body.

~JUFA	When the "αL" switch is toggled ON, a numeral is displayed at
each vertex of the body in the top of the stack. The N'th vertex of a
body can  be  brought into  the stack  by  typing "αV<n>".    Besides
belonging to rings; vertices and  faces have one additional link, the
PED or first edge link which points to one of the edges of the vertex
or face. The PED of a  vertex or face in the top of the  stack can be
obtained by typing "≥".

	Besides belonging  to an edge ring, each  edges points at its
two faces, its two vertices and its four neighboring edges in each of
its two faces; these last four pointers are  the so called "wings" of
the edge and are used to travel the perimeters of faces and vertices.
Thus with an edge in the top of the stack, either of its two faces or
two vertices  can be obtained  by typing  one of the  four characters
"<>∨∧" respectively.

	The  arcane link positions in words -3,   -2 and -1 of a node
can be  retrieved by  the control "<>≤≥∨∧"  respectively; while  meta
"<>≤≥∨∧" will retrieve from words  6, 7 and 8. No important links are
stored in the arcane positions.
~I0,0;λ13;FA
~JC;FA SECTION 7

~JC;FBDISPLAY CONTROL COMMANDS.
~λ5;JAFA
   7.1	STATUS DISPLAY.
	      7.1.1	 "≡"	Status Display Toggle.
			"α≡"	Toggle Now Window's Darken Bit.
			 "#"	Clear the page printer.
	      7.1.2	 "∂"	Datum Display Toggle.
			"α∂"	Datum Format  Toggle.
	      7.1.3	 "L" 	Toggle FEV Lights Switch.
			"αL"	Toggle Body Lights Switch.
			"βL"	Toggle Frame Lights Switch.

   7.2	HELP DISPLAY.
			 "?"	Information Prefix.
			 "H" 	Help.
			"αH"	Unhelp.

   7.3	DISPLAY MODES.
			"space"	Display Refresh, GEODPY.
			 "ALT"	GEODPY with hidden lines eliminated.
			"αALT"	GEODPY with back side faces eliminated.
			"βALT"	GEODPY everything visible.
			"εALT"	GEODPY with OCCULT diagonostics.
			 "_"	Sticky Alt.
			"α_"	Sticky αALT.
			"β_"	Sticky βALT.
			"ε_"	Sticky εALT.

   7.4	EDGE DISPLAY BITS.
	      7.4.1 	"αD"	Darken.
			"εD" Undarken.
	      7.4.2	"X NSHARP"

   7.5 	FACE COLORING.
			"X COLOR <n>RED <n>GRN <n>BLU <n>ALB"

   7.6	CAMERA COMMANDS.
			"αC"	Push now camera into the stack.
			"βC" 	Make new camera.
			"β}"	Step now camera forwards.
			"β{"	Step now camera backwards.
			"αF"	Set Camera's Focal Plane distance.

   7.7	WORLDS AND WINDOWS.
			 "W" 		Make Window in Now Display Ring.
			"αW"		Make Window in New Display Ring.
			"βW"		Make New World.
			 "{" and "}"	Step Now Display.
			"α{" and "α}"	Step Now World.

   7.8	IMAGE RINGS.
			"αT" 		Make a Simulated Image Body.
			 "←" and  "→" 	Step Perceived CRE Image Ring.
			"α←" and "α→" 	Step Predicted OCCULT Image Ring.
7.1	STATUS DISPLAY.

~λ13;JUFA	The execution of  nearly every GEOMED command is  followed by
the  two display  refresh routines called  GEODPY and  STADPY. STADPY
refreshes the  stack  display, the  editor  status display,  the  node
contents  display,  and the  top  of  stack brighteners  called  "the
lights" which are governed by the "L" command. GEODPY scans the "now"
display ring of the universe node, and refreshes a  piece of glass for
each window having a camera.


~JAFA7.1.1	 "≡"	Status Display Toggle.
	"α≡"	Toggle Now Window's Darken Bit.
	 "#"	Clear the page printer.

~JUFA	The STADPY (status display) is turned  on and off by  the "≡"
command.  The "α≡" command  will turn the  window border  on and off,
(that  rectangle). The  "#"  command  types  four  form  feeds,  for
clearing the page printer of visible characters.

~JAFA7.1.2	 "∂"	Datum Display Toggle.
	"α∂"	Datum Format  Toggle.

~JUFA	The "∂" command causes the contents of the node at the top of
the  stack to  be displayed  in the  lower right  hand corner  of the
screen. Frame, body  and camera  nodes have a  special display  which
indicates their location and  orientation; the special display format
can  be toggled  on  and off  by means  of the  "α∂" command.  In the
regular format node display, the appropriate  link following commands
for the different words of the node are indicated.

~JAFA7.1.3	 "L" 	Toggle FEV Lights Switch.
	"αL"	Toggle Body Lights Switch.
	"βL"	Toggle Frame Lights Switch.
	
~JUFA	When the "L" switch  is on; faces, edges and  vertices in the
top  of  the stack  are  intensified.  When the  "αL"  switch  is on,
numerals are displayed for all the vertices of the body in the top of
the stack. The vertex numerals can be used for obtaining a particular
vertex  using the "εV"  command. When the  "βL" switch is  on,  three
vectors are  displayed indicating the  direction of  the axes of  the
current frame of reference; the vectors are labeled respectively by a
letter "X", "Y", or  "Z" followed by a  number between -1.0 and  +1.0
indicating whether  the vector is  going away  or coming towards  the
current camera.
7.2	HELP DISPLAY.

~JAFA	"?"	Information Prefix.
	"H" 	Help.
	"αH"	Unhelp.

~JUFA	Typing a  question mark  "?" followed  by any character  will
type  a  one line  reminder  of  what commands  are  invoked  by that
character. The "H" command  allows the user  to read this document  a
page at a  time while using GEOMED. Help starts  by displaying page-4
and  waits for other  desired page numbers; typing  a carraige return
will exit  the help  with  the display  persisting, control  carraige
return will exit the help  with the display cleared. The "αH" command
clears the HELP display glass.

7.3	DISPLAY MODES.
~λ5;JAFA
	"space"	Display Refresh, GEODPY.
	 "ALT"	GEODPY with hidden lines eliminated.
	"αALT"	GEODPY with back side faces eliminated.
	"βALT"	GEODPY everything visible.
	"εALT"	GEODPY with OCCULT diagonostics.
	 "_"	Sticky Alt.
	"α_"	Sticky αALT.
	"β_"	Sticky βALT.
	"ε_"	Sticky εALT.

~λ13;JUFA	There  are two  basic  display modes:  with  and without  the
hidden  lines eliminated. Initially the  display refresh displays all
the lines that are visible from the simulated cameras of  the windows
of the  now display ring.  The "ALT" commands  do one refresh  in the
mode  selected by the  control bits. An easy  hidden line elimination
takes less than a second; the hardest take up  to thirty seconds. The
underbar  commands,  "_",  make  the  selected display  refresh  mode
sticky, all refreshes are done in  that mode until the next  underbar.
The spacebar command redoes the last refresh.
7.4	EDGE DISPLAY BITS.

7.4.1   "αD"	Darken.
        "εD" Undarken.

~JUFA	Given a body  or an edge in the  top of the stack;  these two
commands  set  or  reset the  darken  bit  all  the specified  edges.
Darkened edges will not be intensified by the display refresh.

7.4.2   "X NSHARP"
        "X GOURAUD"

	Given a body  or an edge in the  top of the stack,  these two
extended scanner commands set the "not sharp" and the "Gouraud" bits,
respectively all the edges of the body or of the given edge.  The two
bits  specify different  kinds  of intensity  smoothing  to the  "βO"
command.  The  "not sharp"  bit causes  not sharp and  not folded
edges to be not visible after a hidden  line elimination,
which yields line drawings with a rounded appearance.


7.5 	FACE COLORING.

        "X COLOR <n>RED <n>GRN <n>BLU <n>ALB"

	The coloring  command applied to  a body or  a face  sets the
bytes  of words 4  and 5  of all the  faces given. The  <n> arguments
represent percentage values between 0  and 100; the argument must  be
suffixed by a letter: R, G, B  or A standing for red, green, blue and
albedo. Combining the colors red and green gives yellow; red and blue
gives lavender; blue  and green give a  light sky blue. Lowering  the
albedo  turns red into  crimson, yellow  into brown, green  into dark
green, sky-blue into slate,  blue into deep  blue, and lavender  into
purple.

	In order to get  the so called "I and C"  required by DDVID's
color command, "C"; suffix the filename you type to MKVID with a "/C"
switch.  To  display  a   color  television  picture  on  the   color
synthesizer;  you  must  remove  a  BNC  terminator  from  the  color
synthesizer,  which  is located  in the  kludge  bay above  the video
switch cable fan out; you must place the toggle on  the upper left of
the color  television set in the  up position; and you  must give the
following  commands   to  DDVID:   "C<filename>  <return>   E<return>
R<return>".

	The color  synthesizer  requires twelve  data disc  channels,
which  are usually not available  in the day.  The intensity channels
are 36, 35, 34, 33, 37 and 32; the color channels are 31, 24, 23, 27,
30 and 25. The system information programs DDUSE and FINGER will type
information on who is using which channels and where particular users
are located.
	

7.6	CAMERA COMMANDS.

~JAFA	"αC"	Push now camera into the stack.
	"αF"	Set Camera's Focal Plane distance.
	"βC" 	Make new camera.
	"β}"	Step now camera forwards.
	"β{"	Step now camera backwards.

~JUFA	There are two basic camera commands: "αC"  and "αF". The "αC"
command  will   push  the  now  camera  node   into  the  stack.  The
"αF<distance>" command will set the now camera's focal plane distance
to  the given  value,  the distance  is  assumed to  be  in units  of
millimeters.  The  initial  focal  plane  distance  is  12.5 mm.  The
additional camera commands  allow the creation and  use of a ring  of
cameras. The "βC" command will  create a new camera at the end of the
camera ring of the now world. The "β}" and "β{" commands will advance
or retreat the now camera around the camera ring.

7.7	WORLDS AND WINDOWS.

~JAFA	 "W" 		Make Window in Now Display Ring.
	"αW"		Make Window in New Display Ring.
	"βW"		Make New World.
	 "{" and "}"	Step Now Display.
	"α{" and "α}"	Step Now World.

~JUFA	Although, the data structure below  GEOMED allows many worlds
and windows;  these commands are not intended  for general use.
The "W" command will make a new display window, such as the  one made
by the crosseyed stereo pairs' macro, "β∞". Windows can be scaled and
moved  about  the  screen using  the  Euclidean  transformations, one
translation unit corresponds to  100 display units. The  "αW" command
will make  a new window in  a new display refresh ring;  and the "{",
"α{", "α}" and "}" will as stated advance the display or world rings.
When  there  is  more  than  one  camera  (or  one  world)  the  node
identification of  the now camera (or now  world) is displayed in the
status.

7.8	IMAGE RINGS.
~JAFA
	"αT" 		Make a Simulated Image Body.
	"α←" and "α→" 	Step Predicted OCCULT Image Ring.
	"β←" and "β→" 	Step Perceived CRE Image Ring.

~JUFA	The results  of  a hidden  line elimination  can  be used  to
create a  special kind of polyhedron that  approximates the image. An
image polyhedron is like a  photographic print with faces, edges  and
vertices representing the details of the  image that is on the print.
The  "αT command  (take a picture)  creates such  an image polyhedral
body and  attachs it to  the OCCULT  image ring  of the noew  camera.
Similar to  "αT", the "βI" command inputs  an image polyhedral bodies
from a CRE file  and attachs them  to the CRE image  ring of the  now
camera. The "αT"  command images are  synthetic and the  "βI" command
images are perceived;  the display refresh includes the first CRE and
the first OCCULT image of the  now camera ring (as well as its  usual
view of  its simulated world). The  control and meta, left  and right
arrow,  commands will step the  CRE and OCCULT  rings as stated above.
The creation of  structures for both  synthetic and perceived  images
brings  us to  the start  of computer  vision and  the  conclusion of
GEOMED.
~I0,0;λ2;FA
~JC;FA SECTION 8

~JC;FBCOMMAND SUMMARY BY LEXICAL ORDER.
~JA;I150,0;FA
000	NULL	No operation.
001	 ↓	Push stack down.
	α↓	Rotate stack down.
002	 α	Control key prefix.
003	 β	Meta key prefix.
004	 ∧	PVT, Positive vertex link.
005	 ¬	Evert Body.
	α¬	Body Subtraction.
006	 ε	Meta-Control keys prefix.
007	 π	Set rotation strength, RDEL.
010	 λ	Set translation strength, TDEL.
011	TAB	No operation.
012	LF	No operation.
013	VT	No operation.
014	FF	No operation.
015	CR	Reset iteration count.
016	 ∞	Instant cube.
	α∞	Instant torus.
	β∞	Crosseyed stereo.
017	 ∂	Datum display Toggle.
	α∂	Datum display format Toggle.
020	 ⊂	BRO, parts tree link.
021	 ⊃	SIS, parts tree link.
022	 ∩	DAD, parts tree link.
	α∩	Body Intersection.
023	 ∪	SON, parts tree link.
	α∪	Body Union.
024	 ∀	Enable all body motions.
	α∀	Disable frame  motion.
	β∀	Disable vertex motion.
	ε∀	Disable parts  motion.
025	 ∃	Comment prefix.
	 ∃	Print comment.
	β∃	Wait for character.
	ε∃	Print comment and wait.
026	 ⊗	Push universe node into stack.
027	 ↔	Swap stack elements 1 and 2.
	α↔	Swap stack elements 1 and 3.
	β↔	Swap stack elements 1 and last.
	ε↔	Swap stack elements 2 and 3.
030	 _	Sticky  ALT display refresh.
	α_	Sticky αALT display refresh.
	β_	Sticky βALT display refresh.
	ε_	Sticky εALT display refresh.
031	 →	ALT2, link fetch.
032	TILDE	No operation.
033	 ≠	No operation.
034	 ≤	NED, link fetch.
035	 ≥	PED, link fetch.
036	 ≡	Toggle status display enable.
	α≡	Toggle window display enable.
037	 ∨	NVT, link fetch.
040	SPACE	Display refresh.
041	 !	Set translation default.
042	 "	No operation.
043	 #	Clear page printer.
	α#	Enter DDT.
~JA;I150,0;FA
044	 $	Make convex.
	α$	Edge slurp.
045	 %	Set DDEL, dilation strength.
046	 &	No operation.
047	 '	No operation.
050	 (	Euclidean transformation minus Y.
051	 )	Euclidean transformation plus  Y.
052	 *	Euclidean transformation plus  Z.
053	 +	Fetch other face or vertex.
054	 ,	Fetch clockwise.
055	 -	Euclidean transformation minus Z.
056	 .	Fetch counter clockwise.
057	 /	Halve strength of transformation.
060-071		DIGITS 0 THRU 9
072	 :	Euclidean transformation plus X.
073	 ;	Euclidean transformation minus X.
074	 <	NFACE, link fetch.
075	 =	No operation.
076	 >	PFACE, link fetch.
077	 ?	Information prefix.
100	 @	Set rotation default.
101	 A	Attach.
	βA	Cycle Axis count.
102	 B	Body of a face, edge or vertex.
	αB	Retrieve body by numeral or by name.
103	 C	Copy.
	αC	Push now camera into the stack.
104	 D	Detach.
	αD	Darken.
	εD	Undarken.
105	 E	Make edge and vertex.
	εE	Exit GEOMED.
106	 F	Step frame selector forwards.
	αF	Accept focal plane distance.
	βF	Step frame selector backwards.
107	 G	Glue face-face.
110	 H	Help display.
111	 I	Input B3D.
	αI	Input CAM.
	βI	Input CRE.
	εI	Input GEM.
112	 J	Join vertex-vertex.
113	 K	Kill entity.
	αK	Kill edge and vertex.
114	 L	Face, edge, vertex lights toggle.
	αL	Body lights toggle.
	βL	Frame of reference lights toggle.
115	 M	Midpoint and edge.
116	 N	Name a body.
117	 O	Output B3D.
	αO	Output CAM.
	βO	Output V2D.
	εO	Output GEM.
120	 P	Plot file output.
121	 Q	Toggle frame origin switch.
122	 R	Rotation completion.
~JA;I150,0;FA
123	 S	Sweep cylinder.
	αS	Sweep pyramid.
	βS	Sweep cylinder edges not sharp.
	εS	Sweep pyramid  edges not sharp.
124	αT	Take a simulated picture.
125	 U	Unmove a body.
126	 V	Make vertex body.
	αV	Retrieve Nth vertex of a body.
	βV	Make body node.
127	 W	Make window in now display ring.
	αW	Make window in a new display ring.
	βW	Make new world at end of world ring.
130	 X	Extended command scanner:
	PLACE <x> <y> <z>
	ORIENT <pan> <tilt> <swing>
	CUBIC <X width> <Y height> <Z depth>
	BALL  <radius> <M longitudes> <N latitudes>
	CYLN  <radius> <N sides> <Z length>
	CUT <x> <y> <z>
	COLOR <n>RED <n>BLU <n>GRN <n>ALBEDO
	NSHARP
	PRISMOID
	SILHOUETTE <zmin> <zmax>
131	 Y	No operation.
132	βZ	Read commands from GEO text file.
133	 [	No operation.
134	 \	Double strength of transformation.
135	 ]	No operation.
136	 ↑	Pop stack.
	α↑	Rotate stack upwards.
137	 ←	ALT link fetch.
	α←	Step thru simulated image ring of now camera.
140	 `	No operation.
141 THRU 172	Lower case letters same as upper case.
173	 {	Step now display backwards.
	α{	Step now  world  backwards.
	β{	Step now camera  backwards.
174	 |	Invert edge linear orientation.
175	 ALT	Display refresh with hidden lines eliminated.
	αALT	Display refresh with backside faces eliminated.
	βALT	Display refresh with everything visible.
	εALT	Display refresh with OCCULT diagonostics.
176	 }	Step now display forwards.
	α}	Step now  world  forwards.
	β}	Step now camera  forwards.
177	RUBOUT	No operation.